package com.edu.exam.enums.assessment.technical;

/**
 * 推荐类型枚举
 *
 * @author System
 * @version 1.0
 * @since 2025-11-15
 */
public enum RecommendationType {
    /**
     * 通过
     */
    APPROVE("通过", "试卷内容独特，无明显重复问题，可以使用。"),

    /**
     * 审核
     */
    REVIEW("审核", "建议人工审核试卷内容，重点关注重复部分。"),

    /**
     * 修改
     */
    MODIFY("修改", "建议重新组织试卷内容，避免高度重复。"),

    /**
     * 拒绝
     */
    REJECT("拒绝", "试卷与已有试卷高度重复，不建议使用。");

    private final String description;
    private final String defaultMessage;

    RecommendationType(String description, String defaultMessage) {
        this.description = description;
        this.defaultMessage = defaultMessage;
    }

    public String getDescription() {
        return description;
    }

    public String getDefaultMessage() {
        return defaultMessage;
    }

    /**
     * 根据相似度级别获取推荐类型
     *
     * @param similarityLevel 相似度级别
     * @return 推荐类型
     */
    public static RecommendationType fromSimilarityLevel(SimilarityLevel similarityLevel) {
        switch (similarityLevel) {
            case HIGHLY_SIMILAR:
                return REJECT;
            case MODERATELY_SIMILAR:
                return MODIFY;
            case LOW_SIMILARITY:
                return REVIEW;
            case NOT_SIMILAR:
                return APPROVE;
            default:
                return REVIEW;
        }
    }
}